iT邦幫忙

2021 iThome 鐵人賽

DAY 22
0

今天我們談到 declarative 聲明式和 imperative 命令式,

他的概念比較像是以下如下,

假設請一個廚師煮出一道高麗菜

imperative

準備高麗菜

洗高麗菜

炒高麗菜

呈盤上桌

declarative

告訴廚師我要一道高麗菜的聲明

廚師直接端出一到高麗菜

以上這兩種操作各有優缺點,

https://ithelp.ithome.com.tw/upload/images/20211007/20107307YMC2HZREix.png

引用: https://www.ionos.com/digitalguide/websites/web-development/imperative-programming/

參考這張圖的說明,imperative 關注的是對象的操作和流程,而 declarative 關注的是 function 的 input, output

實際範例

使用 function 指定一個 start 和 end 的數字,

分別用 imperative 和 declarative 來操作

// imperative

const loop = (start,end)=>{
	let result = start;
	for (let i = start; i < end; i++) {
		console.log(result);
	  result += 1;
	}
}
loop(2, 10); // 2,3,4,5,6,7,8,9,10
const recurse = (start,end)=>{
	if(start === end){
		console.log(start);
		return;
  }else{
		console.log(start);
	  return recurse(start+1,end);
  }
}
recurse(2, 10); // 2,3,4,5,6,7,8,9,10

可以看到以上兩種寫法都會得出一樣的結果,imperative 常用迴圈來操作,而 declarative 常用遞回來操作,imperative 會經由一些判斷來顯示要的結果,而 declarative 則是關注 input 和 output。

https://medium.com/weekly-webtips/imperative-vs-declarative-programming-in-javascript-25511b90cdb7#:~:text=The most common explanation of,you want from the computer.

https://www.freecodecamp.org/news/functional-programming-in-javascript/

https://www.ionos.com/digitalguide/websites/web-development/imperative-programming/


上一篇
day21: side effect
下一篇
day23: currying
系列文
寫出好維護又簡潔的 react 程式碼 feat: Function Programming30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言